package com.business.lgh.nacos.api.naming.pojo;

import com.fasterxml.jackson.annotation.JsonInclude;
import jdk.nashorn.internal.objects.annotations.Function;
import lombok.Data;

import java.io.Serializable;

/**
 * @author lgh
 * @version V1.0
 * @Package com.business.lgh.nacos.api.naming.pojo
 * 每个Instance代表一个节点
 * @date 2020/6/23 12:29 下午
 */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Instance implements Serializable {

    /**
     * 唯一的ID
     */
    private String instanceId;

    /**
     * 节点IP
     */
    private String ip;

    /**
     * 节点端口
     */
    private int port;

    /**
     * 节点权重
     */
    private double weight = 1.0D;

    /**
     * 是否健康
     */
    private boolean healthy = true;

    /**
     * 是否可接受请求
     */
    private boolean enabled = true;

    /**
     * 是否是临时节点
     *
     * @since 1.0.0
     */
    private boolean ephemeral = true;

    /**
     * 集群名字
     */
    private String clusterName;

    /**
     * 服务名
     */
    private String serviceName;

    /**
     * 命名空间
     */
    private String namespaceId;


    public String getIpAddress(){
        return ip+":"+port;
    }

    /**
     * 生成ID
     * @return
     */
    public String generateInstanceId() {
        return getIp() + "#" + getPort() + "#" + getClusterName() + "#" + getServiceName();
    }

    /**
     * 格式校验
     * @return
     */
    public boolean validate(){
        //TODO 校验IP格式等信息是否正确
        return true;
    }
}
